package cn.bj.controller;

import java.io.File;
import java.io.IOException;

import javax.servlet.http.HttpSession;

import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import cn.bj.beans.Rotate;
import cn.bj.service.RotateService;

/*
 * 首页轮播图
 * 
 * */
@Controller
@RequestMapping("/admin")
public class RotateController {
	@Autowired
	RotateService rotateService;

	// 新增图片
	@RequestMapping("/insertRotate.do")
	@ResponseBody
	public String insert(HttpSession session, @Param("img") MultipartFile img)
			throws IllegalStateException, IOException {
		// 返回信息
		String msg;
		System.out.println("---------" + img.getSize());
		if (img.getSize() > 0) {
			System.out.println("插入。。。。");
			// 得到上传文件的的存储路径，web项目一般只能存储在自己的项目根下，因为服务器是租的别人的
			String path = session.getServletContext().getRealPath("/RotateImg");
			System.out.println(path);
			// 文件名以原来文件名命名
			String ImgName = img.getOriginalFilename();
			System.out.println(ImgName);
			// 限制上传的文件名的后缀名为jpg、png
			if (ImgName.endsWith("jpg") || ImgName.endsWith("png")) {
				System.out.println(" 装载文件");
				// 装载文件
				File file = new File(path, ImgName);
				System.out.println("上传文件");
				// 上传文件
				img.transferTo(file);
				System.out.println("进入插入轮播图111");
				// 拼凑服务器图片的路径
				path = session.getServletContext().getContextPath() + "/RotateImg/" + ImgName;
				System.out.println("进入插入轮播图222");
				// 新生图片
				Rotate rotate = new Rotate();
				System.out.println("进入插入轮播图333");
				rotate.setUrl(path);
				System.out.println(path);
				int num2 = rotateService.insertRotate(rotate);
				System.out.println("进入插入轮播图444");
				if (num2 != 0) {
					msg = "添加成功";
					System.out.println(msg);
					return msg;
				} else {
					msg = "添加失败";
					System.out.println(msg);
					return msg;
				}

			}
			msg = "图片格式不正确，请确认图片格式jpg/png";
			System.out.println(msg);
			return msg;
		}
		msg = "文件不能为空";
		System.out.println(msg);
		return msg;
	}

	// 删除图片,根据ID删除。后面传了一个要删除的id值，比如要删除id是30的图片，整体路径是/delete.do/30
	// id来源于页面上传递时，加上id ？id = ${集合.id}
	@RequestMapping("/deletePicture.do")
	public String deleteP(@Param("id") Integer id) {
		int num3 = rotateService.deleteRotate(id);
		System.out.println(num3);
		return "redirect:/admin/AllAdmins.do";
	}

	// 跳转修改图片,拿到单个对象
	@RequestMapping("/updatePicture.do")
	public String GotoUpdatePicture(@Param("id") Integer id, Model model) {
		Rotate rotate = rotateService.selectById(id);
		model.addAttribute("rotate", rotate);
		return "admin/updatePicture";
	}

	// 修改图片
	@RequestMapping("/PUpdate.do")
	public String updateRotate(Rotate rotate, HttpSession session, @Param("img") MultipartFile img)
			throws IllegalStateException, IOException {
		// 返回信息
		if (img != null) {
			// 得到上传文件的的存储路径，web项目一般只能存储在自己的项目根下，因为服务器是租的别人的
			String path = session.getServletContext().getRealPath("/RotateImg");
			// 文件名以原来文件名命名
			String ImgName = img.getOriginalFilename();
			// 限制上传的文件名的后缀名为jpg、png
			if (ImgName.endsWith("jpg") || ImgName.endsWith("png")) {
				// 装载文件
				File file = new File(path, ImgName);
				// 上传文件
				img.transferTo(file);

				// 拼凑服务器图片的路径
				path = session.getServletContext().getContextPath() + "/RotateImg/" + ImgName;

				// 修改图片
				rotate.setId(rotate.getId());
				rotate.setUrl(path);

				int num2 = rotateService.updateRotate(rotate);

				if (num2 != 0) {
					return "redirect:/admin/AllAdmins.do";
				} else {
					return "admin/error2";
				}

			}
			return "admin/error2";
		}
		return "admin/error2";

	}

}
